/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import Dao.DAO;
import java.sql.ResultSet;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;






/**
 *
 * @author Andre Luiz
 */
public class Cliente {
    private String nome;
    private String rg;
    private String sexo;
    private String tel_1;
    private String tel_2;
    private Date data_nasc;
    private Endereco endereco = new Endereco();
    private boolean removido;
    // variaveis para auxilio na comunicação com o banco de dados
    private Integer codigo;
    private Integer codigo_endereco = null;
    private Calendar a;
    SimpleDateFormat dataToVisao = new SimpleDateFormat("dd/MM/yyyy");

    public Cliente(){
        
    }
    
    public Cliente(String nome, String rg, String cpf, String tel_1, String tel_2, Date data_nasc) {
        this.nome = nome;
        this.rg = rg;
        this.tel_1 = tel_1;
        this.tel_2 = tel_2;
        this.data_nasc = data_nasc;
    }

    public Date getData_nasc() {
        return data_nasc;
    }
    
    public String getData_nascVisao() {
        if(data_nasc!=null)
            return dataToVisao.format(data_nasc);
        else
            return "";
    }

    public String getNome() {
        return nome;
    }

    public String getRg() {
        return rg;
    }

    public String getTel_1() {
        return tel_1;
    }

    public String getTel_2() {
        return tel_2;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public Integer getCodigo_endereco() {
        return codigo_endereco;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }
    
    public void setData_nasc(Date data_nasc) {
        this.data_nasc = data_nasc;
    }
    
    public void setData_nasc(String data_nasc) {
        try {
            this.data_nasc = DateFormat.getDateInstance().parse(data_nasc);
        } catch (ParseException ex) {
            data_nasc = null;
        }
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public void setTel_1(String tel_1) {
        this.tel_1 = tel_1;
    }

    public void setTel_2(String tel_2) {
        this.tel_2 = tel_2;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public void setCodigo_endereco(Integer codigo_endereco) {
        this.codigo_endereco = codigo_endereco;
    }
    
    public void setCodigo(String codigo) {
        try{
            this.codigo = Integer.parseInt(codigo);
        }catch(Exception e){
            
        }
    }

    public void setCodigo_endereco(String codigo_endereco) {
        try{
            this.codigo_endereco = Integer.parseInt(codigo_endereco);
        }catch(Exception e){
            
        }
    }

    public boolean isRemovido() {
        return removido;
    }

    public void setRemovido(boolean removido) {
        this.removido = removido;
    }

    @Override
    public String toString() {
        return "Cliente{" + "nome=" + nome + ", rg=" + rg + ", sexo=" + sexo + ", tel_1=" + tel_1 + ", tel_2=" + tel_2 + ", data_nasc=" + data_nasc + ", removido=" + removido + ", codigo=" + codigo + ", codigo_endereco=" + codigo_endereco + '}';
    }
    
    public String toStringSQL_Insert() {
        return "\"Cliente\"{" + "nome=" + nome + ", rg=" + rg + ", tel_1=" + tel_1 + ", tel_2=" + tel_2 + ", data_nasc=" + data_nasc + ", sexo=" + sexo + ", removido=" + removido + ",}";
    }
    
    public String toStringSQL_InsertFK() {
        return "\"Cliente\"{" + "nome=" + nome + ", rg=" + rg + ", tel_1=" + tel_1 + ", tel_2=" + tel_2 + ", data_nasc=" + data_nasc + ", codigo_endereco=" + codigo_endereco + ", sexo=" + sexo + ", removido=" + removido + ",}";
    }
    
    public String toStringSQL_Update() {
        return "\"Cliente\"{" + "nome=" + nome + ", rg=" + rg + ", tel_1=" + tel_1 + ", tel_2=" + tel_2 + ", data_nasc=" + data_nasc + ", codigo=" + codigo + ", sexo=" + sexo + ", removido=" + removido + ", codigo_endereco=" + codigo_endereco + ",}";
    }
    public String toStringSQL_Remove() {
        return "\"Cliente\"{" + "removido=" + removido + ",}";
    }
    
    public boolean setALL(ResultSet rs, boolean nextInicial){
        try {
            if(nextInicial)
                rs.next();
            
            this.codigo = rs.getInt("codigo");
            this.nome = rs.getString("nome");
            this.rg = rs.getString("rg");
            this.data_nasc = rs.getDate("data_nasc",a);
            this.sexo = rs.getString("sexo");
            this.tel_1 = rs.getString("tel_1");
            this.tel_2 = rs.getString("tel_2");
            this.codigo_endereco= rs.getInt("codigo_endereco");
            this.removido= rs.getBoolean("removido");
            if(this.codigo_endereco!=null){
                ResultSet r = DAO.selectAll("\"Endereco\"","WHERE codigo="+this.codigo_endereco+" AND "+"removido=false");
                if(r!=null && r.next()){
                    this.endereco.setALL(r, false);
                }
            }
            
            return true;
       } catch (Exception ex) {
           ex.printStackTrace();
           System.out.println(ex.getMessage());
           return false;
       }
    }
    
}
